Many computer applications include a large number of commands, features, controls, options, and other functions, which can make it difficult for users to locate a desired function. For example, a three dimensional (3D) graphics application that allows a user to perform modeling, animation, and rendering for creating visual effects, character animation, and game development may contain hundreds or even thousands of different functions. An example of such a 3D application is 3d studio max® from Discreet®, a division of Autodesk, Inc.
Many applications use one or more types of menu objects for organizing the functions of the application. One approach for organizing application functions for more efficient use by users is the basic menu object that is part of the graphical user interface (GUI) for most modern applications. Typically, each application includes a menu bar at the top of the display that lists several different menus, such as File, Edit, View, Options, Window, and Help. A user selects one of the menus from the menu bar by using one of several methods. For example, the user may use a cursor control device, such as a mouse, to position the cursor over a desired menu and then click a button on the cursor control device to select the menu, or the user may use a “short cut” key or keys on the keyboard, such as “Alt-F” to select the File menu.
Once a menu is selected, a list of the menu items for the selected menu is displayed. The user may then select one of the menu items to execute the function associated with the menu item. Some menu items correspond to commands, such as to open or save a file. Other menu items correspond to dialog boxes that provide the user with options and perhaps also the status for a feature of the application. While menus generally accept one input from the user (e.g., the selection of a menu item to be executed), dialog boxes allow the user to provide multiple inputs, such as to configure options for the application. For example, the user of a dialog box can select or unselect options by using check boxes, using pull down menus to select from a list of options, and entering data into input boxes. When the user has configured the options as desired, the user typically exits the dialog box via an “OK” button or a “SAVE” button to apply the options as configured by the user, or the user may exit via a “CANCEL” button to disregard the options that the user may have modified.
Still other menu items in a menu correspond to sub-menus that present additional sets of menu items. As used herein, a sub-menu is a menu that is accessed from another menu or sub-menu. The term “base menu” is used herein to denote menus that are not sub-menus. For example, the File and Edit menus of a typical menu bar are base menus that may include menu items that lead to sub-menus. The term “menu” is used herein to denote both base menus and sub-menus.
While the basic menu approach helps to organize the functions that users may access for an application, the basic menu approach has several disadvantages. For example, to select a menu item using the cursor, the user must first move the cursor to a particular menu listed in the menu bar, select the menu, and then move the cursor to the desired menu item, which can often require a significant amount of cursor movement around the display. If the user is frequently accessing the functions of the application, the repeated movement of the cursor limits the productivity of the user.
Furthermore, extra cursor movement is part of the larger problem of the user's attention being divided between working with the GUI and working on the artwork or document that is the subject of the user's creative efforts. The repeated change of focus between the creative endeavor and navigating the user interface for commands limits the user's productivity and creative flow.
In addition, although shortcut keys can be used to avoid having to move the cursor, many users prefer to use the cursor instead of having to learn which short cut keys correspond to which menus or menu items. Applications with a large number of functions may require many different menus with one or more layers of sub-menus, and therefore the user may have to navigate through several menus to find a desired function.
Another approach for organizing the functions of an application is a menu object known as a tool bar. A tool bar is a list of short cuts to particular application features. The short cuts are often represented by small graphical images or icons. While the tool bar can provide quick access to several functions of the application, the number of features that may be included in the tool bar is limited because adding additional features to the tool bar occupies a greater amount of the display. Thus, larger tool bars leave less display area for displaying the other features of the application, such as a document in a word processor or a graphical image in a graphics application. Also, a toolbar generally exists at a fixed location on the display, resulting in significant cursor movement by the user. While a movable or floating tool bar, sometimes called a tool palette, may be used, the tool palette may need to be repeatedly moved around on the display to avoid blocking other features or content that are displayed by the application.
Yet another approach for organizing the functions of an application is a menu object known as a pop-up menu. The pop-up menu, sometimes referred to as “right-click” menu, is typically activated by the right button of a cursor control device, such as a mouse, trackball, joystick, or touch pad. The pop-up menu helps to avoid excessive cursor movement because the menu is typically displayed at the location of the cursor and is activated by a button on the cursor control device. Pop-up menus may be context sensitive, meaning that the menu items displayed depend on the context when the menu is activated, such as which object is selected on the display.
Unfortunately, for applications with a large number of commands, the pop-up menu may be quite large and may not even fit on the display without running off of one or more edges of the display. Also, large pop-up menus require significant cursor movement by the user to select a desired menu item. In addition, large pop-up menus occupy a significant amount of the display, which obscures other features that are displayed by the application.
Still another approach for organizing the functions of an application is a menu object known as the “Marking Menu” by Alias|Wavefront. Marking Menus are pop-up menus that use a radial menu technique in which menu items are arranged in a circle around the cursor. Each menu item is selected by a quick stroke of the cursor by the user. Marking Menus may be used by displaying a radial menu. After the user has learned which menu items are located in each direction, Marking Menus may then be used by displaying an “ink trail” after the cursor without the radial menu. However, the number of menu items that can be accommodated in such a radial menu approach is limited because increasing the number of items means the user must be more accurate in selecting the direction that corresponds to a desired menu item. Further, each direction can only have one menu item, which further limits the number of menu items that may be included.
Another approach by Alias|Wavefront is a menu object known as the HotBox, which compiles all the menu items into one mega-menu bar that works like a pop-up menu. Menus are broken up into related sets, or menu bars. When the user presses and holds down the space bar, all the menu bars pop-up. While HotBox allows the user to access menu bars at the location of the cursor instead of at a fixed position on the screen, the user is still required to select the desired menu and then navigate through the menus and sub-menus as with a basic menu bar. Moreover, if there is a large number of menu bars and menus, HotBox can occupy a significant amount of the display.
The problems of significant cursor movement, divided user attention between the GUI and the creative endeavor, and large menus of the prior approaches are particularly inconvenient in applications that include hundreds or thousands of commands. Due to the large number of functions, the cursor must be moved over most or all of the display to locate and select a desired menu item, the user interrupts their creative work to navigate the menus to find desired commands, and the large size of the menus may block a significant amount of the document or images displayed by the application.
Based on the foregoing, it is desirable to provide improved techniques for managing menus associated with a graphical user interface for computer software.